<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>BLAS</title>
  <meta name="GENERATOR" content="Quanta Plus" />
  <meta name="AUTHOR" content="Gunter Winkler" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" href="../../../../boost.css" type="text/css"/>
  <link rel="stylesheet" href="ublas.css" type="text/css" />
  <script type="text/javascript" src="js/jquery-1.3.2.min.js" async="async" ></script>
  <script type="text/javascript" src="js/jquery.toc-gw.js" async="async" ></script>
</head>
<body>


<h1>Level 3 BLAS</h1>
<div class="toc" id="toc"></div>
<hr />
<a name="_details"></a>

<table summary="" border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br /><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T, class M2, class M3&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga0">boost::numeric::ublas::blas_3::tmm</a> (M1 &amp;m1, const T &amp;t, const M2 &amp;m2, const M3 &amp;m3)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">triangular matrix multiplication  <a href="#ga0"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T, class M2, class C&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga1">boost::numeric::ublas::blas_3::tsm</a> (M1 &amp;m1, const T &amp;t, const M2 &amp;m2, C)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">triangular solve <em>m2</em> * <em>x</em> = <em>t</em> * <em>m1</em> in place, <em>m2</em> is a triangular matrix  <a href="#ga1"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T1, class T2, class M2, class M3&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga2">boost::numeric::ublas::blas_3::gmm</a> (M1 &amp;m1, const T1 &amp;t1, const T2 &amp;t2, const M2 &amp;m2, const M3 &amp;m3)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">general matrix multiplication  <a href="#ga2"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T1, class T2, class M2&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga3">boost::numeric::ublas::blas_3::srk</a> (M1 &amp;m1, const T1 &amp;t1, const T2 &amp;t2, const M2 &amp;m2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">symmetric rank k update: <em>m1</em> = <em>t</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m2<sup>T</sup></em>)  <a href="#ga3"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T1, class T2, class M2&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga4">boost::numeric::ublas::blas_3::hrk</a> (M1 &amp;m1, const T1 &amp;t1, const T2 &amp;t2, const M2 &amp;m2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">hermitian rank k update: <em>m1</em> = <em>t</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m2<sup>H</sup></em>)  <a href="#ga4"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T1, class T2, class M2, class M3&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga5">boost::numeric::ublas::blas_3::sr2k</a> (M1 &amp;m1, const T1 &amp;t1, const T2 &amp;t2, const M2 &amp;m2, const M3 &amp;m3)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generalized symmetric rank k update: <em>m1</em> = <em>t1</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m3<sup>T</sup></em>) + <em>t2</em> * (<em>m3</em> * <em>m2<sup>T</sup></em>)  <a href="#ga5"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M1, class T1, class T2, class M2, class M3&gt; M1 &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="#ga6">boost::numeric::ublas::blas_3::hr2k</a> (M1 &amp;m1, const T1 &amp;t1, const T2 &amp;t2, const M2 &amp;m2, const M3 &amp;m3)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generalized hermitian rank k update: <em>m1</em> = <em>t1</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m3<sup>H</sup></em>) + (<em>m3</em> * (<em>t2</em> * <em>m2</em>)<sup>H</sup>)  <a href="#ga6"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M, class E1, class E2&gt; BOOST_UBLAS_INLINE M &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="products.html#ga7">boost::numeric::ublas::axpy_prod</a> (const matrix_expression&lt; E1 &gt; &amp;e1, const matrix_expression&lt; E2 &gt; &amp;e2, M &amp;m, bool init=true)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">computes <code>M += A X</code> or <code>M = A X</code> in an optimized fashion.  <a href="products.html#ga7"></a><br /><br /></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class M, class E1, class E2&gt; BOOST_UBLAS_INLINE M &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="products.html#ga8">boost::numeric::ublas::opb_prod</a> (const matrix_expression&lt; E1 &gt; &amp;e1, const matrix_expression&lt; E2 &gt; &amp;e2, M &amp;m, bool init=true)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">computes <code>M += A X</code> or <code>M = A X</code> in an optimized fashion.  <a href="products.html#ga8"></a><br /><br /></td></tr>
</table>

<hr />

<h2>Function Documentation</h2>

<a class="anchor" name="ga0" doxytag="boost::numeric::ublas::blas_3::tmm" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; tmm           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M3 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m3</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>
<p>triangular matrix multiplication </p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga1" doxytag="boost::numeric::ublas::blas_3::tsm" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; tsm           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>C&nbsp;</td>
          <td class="mdname" nowrap></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
triangular solve <em>m2</em> * <em>x</em> = <em>t</em> * <em>m1</em> in place, <em>m2</em> is a triangular matrix 
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga2" doxytag="boost::numeric::ublas::blas_3::gmm" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; gmm           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M3 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m3</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
general matrix multiplication 
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga3" doxytag="boost::numeric::ublas::blas_3::srk" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; srk           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
symmetric rank k update: <em>m1</em> = <em>t</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m2<sup>T</sup></em>) 
</p>
<dl compact><dt><b>Todo:</b></dt><dd>use opb_prod() </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ga4" doxytag="boost::numeric::ublas::blas_3::hrk" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; hrk           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
hermitian rank k update: <em>m1</em> = <em>t</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m2<sup>H</sup></em>) 
</p>
<dl compact><dt><b>Todo:</b></dt><dd>use opb_prod()</dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ga5" doxytag="boost::numeric::ublas::blas_3::sr2k" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; sr2k           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M3 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m3</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
generalized symmetric rank k update: <em>m1</em> = <em>t1</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m3<sup>T</sup></em>) + <em>t2</em> * (<em>m3</em> * <em>m2<sup>T</sup></em>) 
</p>
<dl compact><dt><b>Todo:</b></dt><dd>use opb_prod()</dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ga6" doxytag="boost::numeric::ublas::blas_3::hr2k" ></a>
<table summary="" class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table summary="" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> M1&amp; hr2k           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">M1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T1 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const T2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M2 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const M3 &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>m3</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table summary="" cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
generalized hermitian rank k update: <em>m1</em> = <em>t1</em> * <em>m1</em> + <em>t2</em> * (<em>m2</em> * <em>m3<sup>H</sup></em>) + (<em>m3</em> * (<em>t2</em> * <em>m2</em>)<sup>H</sup>) 
</p>
<dl compact><dt><b>Todo:</b></dt><dd>use opb_prod()</dd></dl>
    </td>
  </tr>
</table>



<hr />
<p>Copyright (&copy;) 2000-2004 Michael Stevens, Mathias Koch, 
Joerg Walter, Gunter Winkler<br />
Use, modification and distribution are subject to the
Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
http://www.boost.org/LICENSE_1_0.txt</a>).
</p>
<script type="text/javascript">
(function($) {
    $('#toc').toc();
})(jQuery);
</script>
</body>
</html>
